<?php

class Application_Model_Factory
{
    /** ТИПЫ */
    const TYPE_STOCK   = 'stock';
    const TYPE_USEFUL  = 'useful';
    const TYPE_GALLERY = 'gallery';
    const TYPE_GALLERY_ALBUM = 'galleryalbum';
    const TYPE_RENT    = 'rent';
    const TYPE_RENT_CATEGORY = 'rentcat';

    /** СТРАНИЦЫ В КАТАЛОГЕ */
    const CATALOG_RENT      = 'rent';
    const CATALOG_RENT_GOOD = 'rentcat';
    const CATALOG_REPAIR    = 'repair';
    const CATALOG_ELECTRIC  = 'electric';
    const CATALOG_SANITARY  = 'sanitary';
    const CATALOG_BUILDER   = 'builder';

    public static function createForm($form, $id = null, $params = array())
    {
        switch ($form) {
            case self::TYPE_STOCK:
                $table  = new Application_Model_DbTable_Stock();
                $object = new Application_Model_Stock();
                $tpl  = self::TYPE_STOCK;
                $type = self::TYPE_STOCK;
                break;
            case self::TYPE_USEFUL:
                $table  = new Application_Model_DbTable_Useful();
                $object = new Application_Model_Useful();
                $tpl  = self::TYPE_USEFUL;
                $type = self::TYPE_USEFUL;
                break;
            case self::TYPE_GALLERY:
                $table  = new Application_Model_DbTable_Gallery();
                $object = new Application_Model_Photo();
                $tpl  = self::TYPE_GALLERY;
                $type = self::TYPE_GALLERY;
                break;
            case self::TYPE_RENT:
                $table  = new Application_Model_DbTable_Rent();
                $object = new Application_Model_Rent();
                $tpl  = self::TYPE_RENT;
                $type = self::TYPE_RENT;
                break;
            case self::TYPE_RENT_CATEGORY:
                $table  = new Application_Model_DbTable_RentCategory();
                $object = new Application_Model_RentCategory();
                $tpl  = self::TYPE_RENT_CATEGORY;
                $type = self::TYPE_RENT_CATEGORY;
                break;
            case self::TYPE_GALLERY_ALBUM:
                $table  = new Application_Model_DbTable_GalleryAlbums();
                $object = new Application_Model_GalleryAlbums();
                $tpl  = self::TYPE_GALLERY_ALBUM;
                $type = self::TYPE_GALLERY_ALBUM;
                break;
        }

        if (!(isset($table, $object, $tpl, $type))) {
            return null;
        }

        $mapper = null;

        if ($id) {
            $mapper = new Application_Model_Mapper($table, $object);
            $object = $mapper->getById((int) $id);
        }

        return new Application_Model_Form($object, $tpl , $type, $mapper, $params);
    }
    public static function createCatalogCategory($category)
    {
        $config = array();
        $defaultText = '<br>Данные скоро будут добавлены, а пока вы можете позвонить в наш магазин, чтобы получить необходимую информацию.';


        switch($category) {
            case self::CATALOG_RENT:
                $config = array(
                    'title' => 'Аренда инструмента',
                    'logo'  => self::CATALOG_RENT,
                    'head_info' => '<b>Пожалуйста, ознакомьтесь с <a class="info-text" target="_blank" href="http://truds.ru/useful/6">условиями аренды оборудования</a>.</b> <br/><a rel="rent-stock" href="/ajax/popuprentstock?ajax=true" title="" class="btn btn-green button-stock-rent">Получить скидку</a><br/>Предоставляем в аренду и прокат строительный бензо-электроинструмент и оборудование.',
                    'description' => '',
                );
                break;
            case self::CATALOG_RENT_GOOD:
                $category4Pu = Zend_Controller_Front::getInstance()->getRequest()->getParam('category');
                $mapper = new Application_Model_Mapper(new Application_Model_DbTable_RentCategory(), new Application_Model_RentCategory());
                $category = $mapper->getRentCategoryBy4pu($category4Pu);

                $config = array(
                    'title' => 'Аренда инструмента',
                    'logo'  => self::CATALOG_RENT,
                    'head_info' => '<b>Пожалуйста, ознакомьтесь с <a class="info-text" target="_blank" href="http://truds.ru/useful/6">условиями аренды оборудования</a>.</b><br/><a rel="rent-stock" href="/ajax/popuprentstock?ajax=true" title="" class="btn btn-green button-stock-rent">Получить скидку</a><br/>Предоставляем в аренду и прокат строительный бензо-электроинструмент и оборудование.',
                    'description' => $category->getDesc(true),
                );
                break;
            case self::CATALOG_REPAIR:
                $config = array(
                    'title' => 'Ремонт инструмента',
                    'logo'  => self::CATALOG_REPAIR,
                    'head_info' => 'В нашей мастерской мы предлагаем Вам:',
                    'description' => '',
                );
                break;
            case self::CATALOG_ELECTRIC:
                $config = array(
                    'title' => 'Электрика',
                    'logo'  => self::CATALOG_ELECTRIC,
                    'head_info'   => 'Большой выбор Бензо и Электро Инструмента, а также световой электрики. Кабели, розетки, светильники, теплые полы и многое другое. ',
                    'description' => $defaultText,
                );
                break;
            case self::CATALOG_SANITARY:
                $config = array(
                    'title' => 'Сантехника',
                    'logo'  => self::CATALOG_SANITARY,
                    'head_info'   => 'Продажа смесителей, ванн, унитазов, душевых кабин, всех  элементов для сантехнического подключения. Проверено Сантехниками!',
                    'description' => $defaultText,
                );
                break;
            case self::CATALOG_BUILDER:
                $config = array(
                    'title' => 'Стройматериалы',
                    'logo'  => self::CATALOG_BUILDER,
                    'head_info' => 'Имеются в продаже строительные материалы, ручной инструмент, садовый инвентарь.',
                    'description' => $defaultText,
                );
                break;
        }

        return new Application_Model_CatalogCategory($config);
    }

    public static function getGood($id, $type)
    {
        switch ($type) {
            case self::TYPE_RENT:
                $mapper = new Application_Model_Mapper(new Application_Model_DbTable_Rent(), new Application_Model_Rent());
                return $mapper->getById($id);
                break;
        }

        return null;
    }

    /**
     *
     * @param array                  $serialize
     * @param Zend_Db_Table_Abstract $table
     */
    public static function saveSortDataDigest($serialize, Zend_Db_Table_Abstract $table, $type)
    {
        foreach ($serialize as $sortKey => $data) {
            $id = (int) str_replace('id-', '', $data);

            if (!$id) {
                continue;
            }

            $table->update(array($type . '_priority' => $sortKey + 1), $type . '_id = ' . $id);
        }
    }

    public static function getRepairProviders()
    {
        $providers = array(
            1 => array(
                'title' => 'Briggs & Stratton',
                'sort' => 6,
                'url' => 'http://www.briggsandstratton.com/eu/ru',
            ),
            2 => array(
                'title' => 'Makita',
                'sort' => 2,
                'url' => 'http://www.makita.com.ru ',
            ),
            3 => array(
                'title' => 'Metabo',
                'sort' => 20,
                'url' => 'http://www.metabo.ru',
            ),
            4 => array(
                'title' => 'Al-ko',
                'sort' => 1,
                'url' => 'http://www.al-ko.com.ru',
            ),
            5 => array(
                'title' => 'Bosch',
                'sort' => 14,
                'url' => 'http://www.bosch.ru/ru/ru/startpage_1/country-landingpage.php',
            ),
            6 => array(
                'title' => 'Champion',
                'sort' => 8,
                'url' => 'http://www.championtool.ru',
            ),
            7 => array(
                'title' => 'DDE',
                'sort' => 7,
                'url' => 'http://www.dde-um.com',
            ),
            8 => array(
                'title' => 'DeWalt',
                'sort'  => 8,
                'url'   => 'http://www.dewalt.ru',
            ),
            9 => array(
                'title' => 'Echo',
                'sort' => 4,
                'url' => 'http://www.echotool.ru',
            ),
            10 => array(
                'title' => 'Homelite',
                'sort'  => 11,
                'url'   => 'http://www.homelite.ru',
            ),
            11 => array(
                'title' => 'Honda',
                'sort'  => 13,
                'url'   => 'http://www.honda.com',
            ),
            12 => array(
                'title' => 'Husqvarna',
                'sort'  => 12,
                'url'   => 'http://www.husqvarna.com/ru/home/',
            ),
            13 => array(
                'title' => 'Интерскол',
                'sort' => 10,
                'url' => 'http://www.interskol.ru',
            ),
            14 => array(
                'title' => 'Karcher',
                'sort' => 13,
                'url' => 'http://www.karcher.ru/ru/Home.htm',
            ),
            15 => array(
                'title' => 'Partner',
                'sort' => 3,
                'url' => 'http://www.partner.biz/ru/',
            ),
            16 => array(
                'title' => 'Hammer',
                'sort'  => 16,
                'url'   => 'http://hammer-pt.com/ru/',
            ),
            17 => array(
                'title' => 'Rebir',
                'sort' => 19,
                'url' => 'http://www.rebir.lv',
            ),
            18 => array(
                'title' => 'Hitachi',
                'sort' => 9,
                'url' => 'http://www.hitachi.ru',
            ),
            19 => array(
                'title' => 'STIHL',
                'sort'  => 17,
                'url'   => 'http://www.stihl.ru',
            ),
            20 => array(
                'title' => 'Viking',
                'sort'  => 18,
                'url'   => 'http://www.viking-garden.ru',
            ),
        );

        uasort($providers, function ($a, $b) {
            if ($a['sort'] > $b['sort']) {
                return 1;
            }

            if ($a['sort'] < $b['sort']) {
                return -1;
            }

            return 0;
        });

        return $providers;
    }
}